Various mechanisms exist to allow computers and executing software applications to interact. For example, remote procedure call (“RPC”) protocols have long existed that allow a program on one computer to cause a program on another computer to be executed, and various object-oriented and other architectures such as CORBA (“Common Object Request Broker Architecture”), DCOM (“Distributed Component Object Model”), Java RMI (“Remote Method Invocation”), JavaSpaces, Jini, JXTA, and UPnP (“Universal Plug-n-Play”) provide similar capabilities. In addition, a variety of middleware programs have been implemented to connect separate applications (often of distinct types and from unrelated sources) to allow communication. For example, various EDI (“Electronic Data Interchange”) networks exist that provide standard mechanisms to allow a computer system of one user of the network to send data to a computer system of another user of the network.
The widespread popularity of the World Wide Web (“Web”) has provided additional opportunities for computers to inter-communicate. For example, much current Web use involves users interactively requesting Web pages from Web servers (e.g., via executing Web browser applications of the users) and receiving the requested information in response. In addition to such interactive user specification of requested information, there is also growing use of the Web to support the programmatic interaction of remote applications to exchange information via defined APIs (“application program interfaces”), such as via Web services. Web services allow heterogeneous applications and computers to interact, and can be defined and implemented using a variety of underlying protocols and techniques. For example, some Web service implementations return data in computer-readable XML (“eXtensible Markup Language”) format using HTTP (“HyperText Transport Protocol”) in response to a Web service invocation request specified as a URI (“Uniform Resource Identifier”), such as a URL (“Uniform Resource Locator”) that includes a specified operation and one or more query parameters. In other implementations, additional underlying protocols are used for various purposes, such as SOAP (“Simple Object Access Protocol”) for standard message exchange, WSDL (“Web Services Description Language”) for description of service invocation interfaces (e.g., using XML format), and UDDI (“Universal Description, Discovery, and Integration service”) for discovery of available services.
Although Web services allow various applications and computers to interact, the current implementations and uses of Web services have various limitations. For example, while Web services are increasingly being provided from various companies and other entities for various purposes, such available Web services are typically focused on very limited functionality related to the entity providing the service. Thus, for example, a company that generates driving directions information might provide a Web service that enables programmatic access to such information, but would not typically provide Web services that use the driving directions information (or other types of information) to enable a variety of other types of functionality for potential consumers, such as to provide the driving directions in alternative formats (e.g., in spoken form or in various languages) or to provide various additional types of location-based information (e.g., corresponding to locations in the driving directions). While available Web services from various providers may each provide useful functionality of a limited type, it may often be the case that a potential consumer desires a combination of various functionalities that are not provided by a single available Web service, and the potential consumer may lack the resources or capabilities to manually invoke and combine those various Web services in the proper manner to achieve the desired results.